package 二叉树;

import common.TreeNode;

/**
 * @author tmh
 * @date 2024/8/21 22:18
 * @description
 */
public class T543二叉树的直径 {
    //保存最后得结果
    int ans = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        maxLength(root);
        return ans;
    }

    public int maxLength(TreeNode root) {
        //边界条件 如果root为null，返回-1
        if (root == null) {
            return -1;
        }
        //往左遍历
        int leftLen = maxLength(root.left);
        //往右遍历
        int rightLen = maxLength(root.right);
        ans = Math.max(ans, leftLen + rightLen + 2);
        //返回得是以当前节点为根子树得长度
        return Math.max(leftLen, rightLen) + 1;
    }
}
